# --- Stage 1: 选择基础镜像 ---
# 我们选择官方的 Python 3.10 镜像
FROM python:3.10
# --- Stage 2: 设置工作环境 ---
# 设置环境变量，确保 Python 输出是无缓冲的，便于实时查看日志
ENV PYTHONUNBUFFERED 1
# 在容器内创建一个 /app 目录
WORKDIR /app
# --- Stage 3: 安装依赖 (利用层缓存优化) ---
# 先只复制依赖清单文件。只要这个文件不改变，Docker 就会使用缓存的层，
# 无需每次都重新安装所有库，极大地加快了后续构建速度。
COPY requirements.txt .
# 在容器内执行 pip 命令安装所有依赖
RUN pip install --no-cache-dir -r requirements.txt
# --- Stage 4: 复制项目代码 ---
# 将当前目录下的所有文件和文件夹复制到容器的 /app 工作目录中
COPY . .
# --- Stage 5: 声明与执行 ---
# 声明容器将会在 8000 端口上监听服务。这主要用于文档目的。
EXPOSE 8000
# 定义容器启动时要执行的默认命令。
# 使用 uvicorn 来启动我们的 FastAPI 应用。
# ["uvicorn","main:app", ...] 是 exec 格式，是推荐的写法。
# --host 0.0.0.0 是必须的，它让 uvicorn 监听所有网络接口，
# 这样我们才能从容器外部通过端口映射访问到它。
CMD ["uvicorn","main:app","--host","0.0.0.0","--port","8000"]